<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
====================================================================
 *  Copyright by KNIME AG, Zurich, Switzerland
 *  Website: http://www.knime.com; Email: contact@knime.com
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License, Version 3, as
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful, but
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, see <http://www.gnu.org/licenses>.
 *
 *  Additional permission under GNU GPL version 3 section 7:
 *
 *  KNIME interoperates with ECLIPSE solely via ECLIPSE's plug-in APIs.
 *  Hence, KNIME and ECLIPSE are both independent programs and are not
 *  derived from each other. Should, however, the interpretation of the
 *  GNU GPL Version 3 ("License") under any applicable laws result in
 *  KNIME and ECLIPSE being a combined program, KNIME AG herewith grants
 *  you the additional permission to use and propagate KNIME together with
 *  ECLIPSE with only the license terms in place for ECLIPSE applying to
 *  ECLIPSE and the GNU GPL Version 3 applying for KNIME, provided the
 *  license terms of ECLIPSE themselves allow for the respective use and
 *  propagation of ECLIPSE together with KNIME.
 *
 *  Additional permission relating to nodes for KNIME that extend the Node
 *  Extension (and in particular that are based on subclasses of NodeModel,
 *  NodeDialog, and NodeView) and that only interoperate with KNIME through
 *  standard APIs ("Nodes"):
 *  Nodes are deemed to be separate and independent programs and to not be
 *  covered works.  Notwithstanding anything to the contrary in the
 *  License, the License does not apply to Nodes, you are not required to
 *  license Nodes under the License, and you are granted a license to
 *  prepare and propagate Nodes, in each case even if such Nodes are
 *  propagated with or for interoperation with KNIME.  The owner of a Node
 *  may freely choose the license terms applicable to such Node, including
 *  when such Node is propagated with or for interoperation with KNIME.
====================================================================
-->
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Structure of a NodeFactory.xml file</title>
</head>
<body>
This is the XML file that must be provided with the node (or the NodeFactory).
It describes the node and its components as well as its ports and views - for
the KNIME user.
<br>
<br>
Here is an example that contains all possible sections. See below for an
explanation of each section (each marked with the corresponding number).
<br>
<br>
<tt>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>
&lt;!DOCTYPE knimeNode PUBLIC "-//UNIKN//DTD KNIME Node 1.0//EN"
"http://www.knime.org/Node.dtd"&gt;<br>
&lt;knimeNode <a href="#one"><span
  style="color: rgb(255, 0, 0); font-weight: bold;">(1)</span></a>icon="./myIcon.png"
<a href="#two"><span style="color: rgb(255, 0, 0); font-weight: bold;">(2)</span></a>type="NodeType"&gt;<br>
&nbsp;&nbsp;&nbsp; <a href="#three"><span
  style="color: rgb(255, 0, 0); font-weight: bold;">(3)</span></a>&lt;name&gt;MyNodeName&lt;/name&gt;<br>
&nbsp;&nbsp;&nbsp; <a href="#four"><span
  style="font-weight: bold; color: rgb(255, 0, 0);">(4)</span></a>&lt;shortDescription&gt;Whatever
myNode does in one sentence.&lt;/shortDescription&gt;<br>




&nbsp;&nbsp;&nbsp; <a href="#five"><span
  style="font-weight: bold; color: rgb(255, 0, 0);">(5)</span></a>&lt;fullDescription&gt;<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#fiveOne"><span
  style="font-weight: bold; color: rgb(255, 0, 0);">(5.1)</span></a>&lt;intro&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;A description of the node's functionality
and specialty.<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;p&gt;You can create paragraphs and
lists:<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;ol&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&lt;li&gt;Firstly&lt;/li&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;li&gt;Secondly(Y
axis)&lt;/li&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&lt;li&gt;...&lt;/li&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/ol&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/p&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;For the full and exact specification of
which tags are allowed in which<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; section,
please refer to the DTD file (located in the org.knime.core.node<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; package or at
the above URL.)&lt;/b&gt;&lt;/p&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp; &lt;/intro&gt;<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#fiveTwo"><span
  style="font-weight: bold; color: rgb(255, 0, 0);">(5.2)</span></a>&lt;option
name="Dialog option"&gt;<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If the node
has a dialog, explain the options in the node's <br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dialog here.
Use names the user will be able to associate <br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with the
corresponding dialog option.<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/option&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp; &lt;option name="Dialog option2"&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Add as many option sections as needed.<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/option&gt;<br>




&nbsp;&nbsp;&nbsp; &lt;/fullDescription&gt;<br>




&nbsp;&nbsp;&nbsp; <a href="#six"><span
  style="font-weight: bold; color: rgb(255, 0, 0);">(6)</span></a>&lt;ports&gt;<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;inPort index="0" name="Left
table"&gt;Descriptive text for the <br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
data coming through that port.&lt;/inPort&gt;<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;inPort index="1" name="Right
table"&gt;This text will be displayed <br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in the view.&lt;/inPort&gt;<br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;outPort index="0" name="Joined
table"&gt;While the 'name' is used <br>




&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
in the menus.&lt;/outPort&gt;<br>


&nbsp;&nbsp;&nbsp; &lt;/ports&gt;<br>




&nbsp;&nbsp;&nbsp; <a href="#seven"><span
  style="font-weight: bold; color: rgb(255, 0, 0);">(7)</span></a>&lt;views&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;view index="0" name="Award Winning
View"&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Provide a full
description the view here.<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/view&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;view index="1" name="Next View"&gt;<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Add as many entries as
you have views for that node.<br>




&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/view&gt;<br>




&nbsp;&nbsp; &nbsp;&lt;/views&gt;<br>




&lt;/knimeNode&gt;<br>




</tt>
<br>




If your node has no dialog, you probably won't have any
<code>&lt;option&gt;&lt;/option&gt;</code>
section.
<br>




If you have no view for&nbsp;your node, remove the
<code>&lt;views&gt;&lt;/views&gt;</code>
section.
<br>




Here is the description of the marked items above. If you copy&amp;paste the
above, remove the red numbers from the text.
<br>




<ol>




  <li><a name="one"></a>Specify your icon. If&nbsp;no icon has been set,
  the KNIME default icon will be used.</li>




  <li><a name="two"></a>Specify the type. Legal types are: <code>Source</code>,
  <code>Sink</code>, <code>Learner</code>, <code>Predictor</code>, <code>Manipulator</code>,
  <code>Visualizer</code>, <code>Meta</code>, or<code> Other</code></li>




  <li><a name="three"></a>Provide a name in the <code>&lt;name&gt;</code>
  section. This name is displayed in the node repository view, above the node,
  if it is dragged into workflow, and as the header in the node description
  view.</li>




  <li><a name="four"></a>The <code>&lt;shortDescription&gt;</code> section
  should contain a short description (like 80 to 100 chars) explaining briefly
  what the node does. It is used in the node description view when&nbsp;multiple
  nodes are selected.</li>




  <li><a name="five"></a>The <code>&lt;fulldescription&gt;</code> section
  contains an <code>&lt;intro&gt;</code> and&nbsp;optionally - possibly multiple
  - <code>&lt;option&gt;</code> sections. The options - if defined - are listed
  in the node description view under "Dialog Options".







  <ul>




    <li><a name="fiveOne"></a>In the <code>&lt;intro&gt;</code> section you
    descripe the node's functionality. Explain when it does what; what it
    expects at its in-ports; which data will be delivered at its out-ports. You
    may also add references to external resources, such as publications,
    algorithms, etc.</li>




    <li><a name="fiveTwo"></a>If the node has a dialog you should list all
    user adjustable settings in the list of options. For each option add an <code>&lt;option&gt;</code>
    section with a name (which will be the header for this item), describe all
    possible settings and their consequences.<br />
    If you have multiple tabs in your dialog you can also structure the options by enclosing them in
    severals tabs with <code>&lt;tab name="Tab name"&gt;...&lt;/tab&gt;</code>.
    </li>







  </ul>
  </li>




  <li><a name="six"></a>In the <code>&lt;ports&gt;</code> section, for each
  port of the node, add one of the following:<br>







  <div style="margin-left: 40px;"><code>&lt;inPort index=""
  name=""&gt;description&lt;/inPort&gt;</code>, for any input port,<br>




  <code>&lt;outPort index="" name=""&gt;description&lt;/outPort&gt;</code>, for
  any output port,<br>


  The index&nbsp; must be the same index as used in the source code. The name
  provided is displayed in the menus. The description (between the tags) is
  shown in the node description view. <em>Note, that as of KNIME 2.0 no distinction 
  between data ports and model ports is necessary in the NodeDescription.</em></li>




  <li><a name="seven"></a>If your node comes with one or several differnt
  views, add a <code>&lt;views&gt;</code> section. For each view, add a <code>&lt;view&gt;</code>
  tag, provide an <code>index</code> (the same as in the source code), and a <code>name</code>.
  The name is shown in the menus, the descriptive text of the <code>view</code>
  tag, is displayed in the node description view.</li>




</ol>




<br>




</body>
</html>
